//
//  Field.h
//  Test
//
//  Created by Pedram Ardeshirzadeh on 16-07-12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef Test_Field_h
#define Test_Field_h

<<<<<<< .mine
#include "Deck.h"
#include "Card.h"
#include <list>
=======
#include "Deck.h"
#include "Card.h"
#include "MonsterCard.h"
#include "SpellTrapCard.h"
#include "Hand.h"
>>>>>>> .r45

class Field {
<<<<<<< .mine
    Card* fieldCard;
    std::list<MonsterCardZone*> monsterCards;
    Deck* graveyard;
    Deck* extraDeck;
    std::list<SpellTrapCard*> spellTrapCards;
    Deck* deck;
    static const int MAX_MONSTERCARDS;
    static const int MAX_SPELLTRAPCARDS;
=======
    
>>>>>>> .r45
    SpellTrapCard* fieldCard;
    Deck* monsterCards;
    Deck* graveyard;
    Deck* extraDeck;
    Deck* spellTrapCards;
    Deck* deck;
    Deck* hand;
    Deck* removeDeck;
    static const int MAX_MONSTERCARDS;
    static const int MAX_SPELLTRAPCARDS;
public:
    enum zones{FIELD,MONSTER,GRAVEYARD,SPELLTRAP,EXTRADECK,DECK,REMOVEDECK,HAND};
    
    Field();
    
    void placeFieldCard(SpellTrapCard*);
    SpellTrapCard* getFieldCard();
    void removeFieldCard();
    bool fieldCardPresent();
    
<<<<<<< .mine
    void placeMonsterCard(MonsterCard*);
    bool canPlaceMonsterCard();
    MonsterCard* getMonsterCard(MonsterCard*);
    int monsterPlaced();
=======
    void placeMonsterCard(MonsterCard*);
    void removeMonsterCard(MonsterCard*);
    void removeMonsterCard(int);
    bool canPlaceMonsterCard();
    MonsterCard* getMonsterCard(MonsterCard*);
    MonsterCard* getMonsterCard(int);
    int monsterPlaced();
>>>>>>> .r45
    
<<<<<<< .mine
    void addToGraveyard(Card*);
    Card* getFromGraveyard(Card*);
    Card* drawFromGraveyard(Card*);
    int cardsInGraveyard();
=======
    void addToGraveyard(Card*);
    Card* getFromGraveyard(Card*);
    void removeFromGraveyard(Card*);
    int cardsInGraveyard();
>>>>>>> .r45
    
<<<<<<< .mine
    void setExtraDeck(Deck*);
    Card* drawExtraDeck(Card*);
    Card* getFromExtraDeck(Card*);
    int cardsInExtraDeck();
=======
    void setExtraDeck(Deck*);
    void removeExtraDeck(Card*);
    Card* getFromExtraDeck(Card*);
    int cardsInExtraDeck();
>>>>>>> .r45
    
<<<<<<< .mine
    void placeSpellMagicCard(Card*);
    Card* getSpellMagicCard(Card*);
    int SpellMagicPlaced();
=======
    void setRemoveDeck(Deck*);
    void removeRemoveDeck(Card*);
    Card* getFromRemoveDeck(Card*);
    int cardsInRemoveDeck();
>>>>>>> .r45
    
<<<<<<< .mine
    void setDeck(Deck*);
    Card* drawFromDeck(Card*);
    Card* drawFromDeck();
    Card* getFromDeck(Card*);
    int cardsInDeck();
=======
    void placeSpellMagicCard(SpellTrapCard*);
    void removeSpellMagicCard(SpellTrapCard*);
    void removeSpellMagicCard(int);
    bool canPlaceSpellMagicCard();
    SpellTrapCard* getSpellMagicCard(SpellTrapCard*);
    SpellTrapCard* getSpellMagicCard(int);
    int spellMagicPlaced();    
    
    void setDeck(Deck*);
    Card* drawFromDeck();
    Card* getFromDeck(Card*);
    void removeFromDeck(Card*);
    void removeFromDeck(int);
    int cardsInDeck();
    
    void setHand(Deck*);
    Card* getFromHand(Card*);
    void removeFromHand(Card*);
    void removeFromHand(int);
    int cardsInHand();
    
    Deck* getZone(Field::zones);
    void move(Card*,Field::zones,Field::zones);
>>>>>>> .r45
    
    ~Field();
};

#endif
